#!/usr/bin/env python
#-------------------------------python-------------------analitica1.py--#
#                                                                       #
#                        Geometria analitica 1                          #
#                                                                       #
#--Daniele Zambelli---------------GPL----------------------------2006---#

import pycart

#------------
# Posizione
#------------
 
class Posizione(object):
  def __init__(self, x=0, y=0):    self.x, self.y = x, y

  def get_coordinate(self):        return (self.x, self.y)

  def set_coordinate(self, x, y):  self.x, self.y = x, y

  def move(self, x, y):            self.x+=x; self.y+=y

#------------
# Punto
#------------
 
class Punto(Posizione):
  def __init__(self, x=0, y=0, dim=1, colore='black'):
    Posizione.__init__(self, x, y)
    self.dim=dim
    self.colore=colore
    self.setbounds()
    self.crea()

  def setbounds(self):
    self.bbox = piano._r2s((self.x-self.dim, self.y+self.dim,
                           self.x+self.dim, self.y-self.dim))

  def crea(self):
    self.o=piano.getcanvas().create_oval(self.bbox, fill=self.colore)

  def disegna(self):
    self.setbounds()
    piano.coords(self.o, self.bbox)
    
  def delete(self):
    piano.delete(self.o)

  def move_to(self, x, y):
    Posizione.set_coordinate(self, x, y)
    self.disegna()

  def move(self, x, y):
    Posizione.move(self, x, y)
    piano.move(self.o, piano.scala((x, y)))

#------------
# Segmento
#------------
 
class Segmento(Punto):
  def __init__(self, x=0, y=0, r=0, dim=1, colore='black'):
    '''Disegna un segmento'''
    self.raggio = r
    Punto.__init__(self, x, y, dim, colore)

  def setbounds(self):
    self.bbox = piano._r2s((self.x - self.raggio, self.y - self.raggio,
                           self.x + self.raggio, self.y + self.raggio))

  def crea(self):
    self.o=piano.create_oval(self.bbox, width=self.dim, fill=self.colore)

  def set_raggio(self, r):
    self.raggio = r
    self.setbounds()
    self.disegna()

piano=pycart.Plane('figure in movimento')

def prova():
# Esempi di uso delle classi precedenti e prova di alcuni metodi
  p1=Punto(dim=5, colore='red')

  piano.mainloop()
  
if __name__ == "__main__": prova()
